#ifndef __TRIPLEDESECBINVPERM__
#define __TRIPLEDESECBINVPERM__

#include "../plainkeycipher.h"

// Test vectors from <http://csrc.nist.gov/groups/STM/cavp/documents/des/KAT_TDES.zip>

static const std::vector <PlainKeyCipher> TDES_INVPERM = {
    std::make_tuple("95f8a5e5dd31d900", "0101010101010101", "8000000000000000"),
    std::make_tuple("dd7f121ca5015619", "0101010101010101", "4000000000000000"),
    std::make_tuple("2e8653104f3834ea", "0101010101010101", "2000000000000000"),
    std::make_tuple("4bd388ff6cd81d4f", "0101010101010101", "1000000000000000"),
    std::make_tuple("20b9e767b2fb1456", "0101010101010101", "0800000000000000"),
    std::make_tuple("55579380d77138ef", "0101010101010101", "0400000000000000"),
    std::make_tuple("6cc5defaaf04512f", "0101010101010101", "0200000000000000"),
    std::make_tuple("0d9f279ba5d87260", "0101010101010101", "0100000000000000"),
    std::make_tuple("d9031b0271bd5a0a", "0101010101010101", "0080000000000000"),
    std::make_tuple("424250b37c3dd951", "0101010101010101", "0040000000000000"),
    std::make_tuple("b8061b7ecd9a21e5", "0101010101010101", "0020000000000000"),
    std::make_tuple("f15d0f286b65bd28", "0101010101010101", "0010000000000000"),
    std::make_tuple("add0cc8d6e5deba1", "0101010101010101", "0008000000000000"),
    std::make_tuple("e6d5f82752ad63d1", "0101010101010101", "0004000000000000"),
    std::make_tuple("ecbfe3bd3f591a5e", "0101010101010101", "0002000000000000"),
    std::make_tuple("f356834379d165cd", "0101010101010101", "0001000000000000"),
    std::make_tuple("2b9f982f20037fa9", "0101010101010101", "0000800000000000"),
    std::make_tuple("889de068a16f0be6", "0101010101010101", "0000400000000000"),
    std::make_tuple("e19e275d846a1298", "0101010101010101", "0000200000000000"),
    std::make_tuple("329a8ed523d71aec", "0101010101010101", "0000100000000000"),
    std::make_tuple("e7fce22557d23c97", "0101010101010101", "0000080000000000"),
    std::make_tuple("12a9f5817ff2d65d", "0101010101010101", "0000040000000000"),
    std::make_tuple("a484c3ad38dc9c19", "0101010101010101", "0000020000000000"),
    std::make_tuple("fbe00a8a1ef8ad72", "0101010101010101", "0000010000000000"),
    std::make_tuple("750d079407521363", "0101010101010101", "0000008000000000"),
    std::make_tuple("64feed9c724c2faf", "0101010101010101", "0000004000000000"),
    std::make_tuple("f02b263b328e2b60", "0101010101010101", "0000002000000000"),
    std::make_tuple("9d64555a9a10b852", "0101010101010101", "0000001000000000"),
    std::make_tuple("d106ff0bed5255d7", "0101010101010101", "0000000800000000"),
    std::make_tuple("e1652c6b138c64a5", "0101010101010101", "0000000400000000"),
    std::make_tuple("e428581186ec8f46", "0101010101010101", "0000000200000000"),
    std::make_tuple("aeb5f5ede22d1a36", "0101010101010101", "0000000100000000"),
    std::make_tuple("e943d7568aec0c5c", "0101010101010101", "0000000080000000"),
    std::make_tuple("df98c8276f54b04b", "0101010101010101", "0000000040000000"),
    std::make_tuple("b160e4680f6c696f", "0101010101010101", "0000000020000000"),
    std::make_tuple("fa0752b07d9c4ab8", "0101010101010101", "0000000010000000"),
    std::make_tuple("ca3a2b036dbc8502", "0101010101010101", "0000000008000000"),
    std::make_tuple("5e0905517bb59bcf", "0101010101010101", "0000000004000000"),
    std::make_tuple("814eeb3b91d90726", "0101010101010101", "0000000002000000"),
    std::make_tuple("4d49db1532919c9f", "0101010101010101", "0000000001000000"),
    std::make_tuple("25eb5fc3f8cf0621", "0101010101010101", "0000000000800000"),
    std::make_tuple("ab6a20c0620d1c6f", "0101010101010101", "0000000000400000"),
    std::make_tuple("79e90dbc98f92cca", "0101010101010101", "0000000000200000"),
    std::make_tuple("866ecedd8072bb0e", "0101010101010101", "0000000000100000"),
    std::make_tuple("8b54536f2f3e64a8", "0101010101010101", "0000000000080000"),
    std::make_tuple("ea51d3975595b86b", "0101010101010101", "0000000000040000"),
    std::make_tuple("caffc6ac4542de31", "0101010101010101", "0000000000020000"),
    std::make_tuple("8dd45a2ddf90796c", "0101010101010101", "0000000000010000"),
    std::make_tuple("1029d55e880ec2d0", "0101010101010101", "0000000000008000"),
    std::make_tuple("5d86cb23639dbea9", "0101010101010101", "0000000000004000"),
    std::make_tuple("1d1ca853ae7c0c5f", "0101010101010101", "0000000000002000"),
    std::make_tuple("ce332329248f3228", "0101010101010101", "0000000000001000"),
    std::make_tuple("8405d1abe24fb942", "0101010101010101", "0000000000000800"),
    std::make_tuple("e643d78090ca4207", "0101010101010101", "0000000000000400"),
    std::make_tuple("48221b9937748a23", "0101010101010101", "0000000000000200"),
    std::make_tuple("dd7c0bbd61fafd54", "0101010101010101", "0000000000000100"),
    std::make_tuple("2fbc291a570db5c4", "0101010101010101", "0000000000000080"),
    std::make_tuple("e07c30d7e4e26e12", "0101010101010101", "0000000000000040"),
    std::make_tuple("0953e2258e8e90a1", "0101010101010101", "0000000000000020"),
    std::make_tuple("5b711bc4ceebf2ee", "0101010101010101", "0000000000000010"),
    std::make_tuple("cc083f1e6d9e85f6", "0101010101010101", "0000000000000008"),
    std::make_tuple("d2fd8867d50d2dfe", "0101010101010101", "0000000000000004"),
    std::make_tuple("06e7ea22ce92708f", "0101010101010101", "0000000000000002"),
    std::make_tuple("166b40b44aba4bd6", "0101010101010101", "0000000000000001"),
};

#endif // __TRIPLEDESECBINVPERM__
